package com.airlines.crewassignment.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.airlines.crewassignment.domain.CrewTask;
import com.airlines.crewassignment.domain.DateTimeRange;

/**
 * @author xxxx
 * @date 2018年5月2日 
 * @description
 */
public interface CrewTaskMapper {
	/**
	 * 查询机组人员执行航班任务列表
	 * @param dateTimeRange
	 * @param DutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForFlight(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询所有机组人员加机组信息(非因私)
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForAddCrew(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询所有机组人员加机组信息(所有的)
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForAddCrewAll(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询机组人员值班列表
	 * @param dateTimeRange
	 * @param DutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForDuty(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询机组人员备份情况列表
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForBak(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询机组人员 不能飞(训练)信息
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForTrain(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询机组人员不能飞信息(所有)
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForCannotFly(@Param("dateTimeRange")DateTimeRange dateTimeRange,
			@Param("dutyCode")String dutyCode, @Param("workcode")String workcode);
	
	/**
	 * 查询最后一次机组人员的休假+停飞
	 * @param dutyCode
	 * @param workcode
	 * @param beforeFlightDate 在某个日期前
	 * @return
	 */
	List<CrewTask> listCrewTaskForLastVacationAndStopFly(@Param("dutyCode")String dutyCode, @Param("workcode")String workcode
			,@Param("beforeFlightDate")  Date beforeFlightDate);

	/**
	 * 查询机组人员不能飞信息(病假)
	 * @param dateTimeRange
	 * @param dutyCode
	 * @param workcode
	 * @return
	 */
	List<CrewTask> listCrewTaskForLastSickLeave(@Param("dutyCode")String dutyCode, @Param("workcode")String workcode
			,@Param("beforeFlightDate")  Date beforeFlightDate);
	
	/**
	 * 查询所有的值班情况
	 * @param dutyCode
	 * @param workcode
	 * @param dateTimeRange
	 * @return
	 */
	List<CrewTask> listCrewTaskForAssignment(@Param("dutyCode")String dutyCode, @Param("workcode")String workcode
			,@Param("dateTimeRange")DateTimeRange dateTimeRange);
	
}
